﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using System.Net.Mail; 
using System.Net.Mime;
using System.Web.UI;

//"[Categories].[Category Name].[Category Name]";
    
public partial class Ventas_wfIndicadoresReporte : System.Web.UI.Page
{
    //private static string vOperacion = "C";
    private static String RutaExcel = "";
    protected void Page_Load(object sender, EventArgs e)

    {
      lblMensajeError.Visible = false;
       
      if (!IsPostBack)
      {
         
          // if (RutaExcel.Length == 0)
         // {
         //     return;
         // }
         //cargar_Grid(RutaExcel);
      }
    }

    protected void ASPxUploadControl1_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
    {
        if (e.IsValid)
        {
            //DataSet dsExcel=new DataSet();

            string filePath = Server.MapPath("~/Archivos Excel/" + e.UploadedFile.FileName);
            e.UploadedFile.SaveAs(filePath);
            RutaExcel = filePath;
            dgExcel.Visible = false;
          

         // cargar_Grid("D:\proyectos de Sistemas\Tesis Marchino -  Murga\EspecialidadesMedicas\WebSite\Archivos excel\PivotGrid.xls");
 


           // Util.showmsg("Se Cargo Archivo Correctamente", this.Page);
        }
    }

    void cargar_Grid(string filePath)
    {
        try
        {
            string cnstr = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + filePath + ";"
              + "Extended Properties=Excel 8.0";
            System.Data.OleDb.OleDbConnection oledbConn = new System.Data.OleDb.OleDbConnection(cnstr);
            string strSQL = "SELECT * FROM [Sheet$]";

            System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(strSQL, oledbConn);
            DataSet ds = new DataSet();
            System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
            da.Fill(ds, "Excel");

            dgExcel.DataSource = ds;
            dgExcel.DataMember = "Excel";
            dgExcel.DataBind();
            dgExcel.Visible = true;
        }
        catch(Exception)
        {
            lblMensajeError.Visible = true;
            lblMensajeError.Text = "Error : El archivo excel no tiene la estructura adeacuada. Revise!!!.";
            dgExcel.Visible = false;
            dgExcel.DataSource = null;
            dgExcel.DataBind();
        }


      
    
    }
protected void  btnEnviar_Click(object sender, EventArgs e)
{
    try
    {
        if (validarInsercion() == true)
        {
            if (ASPxFileManager1.SelectedFile == null)
            {
                //Util.showmsg("Selecione el archivo de la imagen del  Vale!!!", this.Page);
                lblMensaje.Text = "Selecione el archivo de la imagen del  Vale!!!";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
                return;
            }

            Enviar_Promocion();
        }
    }
    catch (Exception ex)
    {
        lblMensajeError.Visible = true;
        lblMensajeError.Text = "Error : " + ex.Message;

    }

}

void Enviar_Promocion()
{

    int i = 0;
    while (i<=dgExcel.VisibleRowCount-1)
    {
      //  if (! DBNull.Value.Equals(row[fieldName])) 
      //  string validar_correo= if(System.DBNull.Value(dgExcel.GetRowValues(i, "Correo 1"),"",dgExcel.GetRowValues(i, "Correo 1")));
        if (! DBNull.Value.Equals(dgExcel.GetRowValues(i, "Correo 1")))
        {
            if (Enviar_Correo((string)dgExcel.GetRowValues(i, "Correo 1"),
                            (string)dgExcel.GetRowValues(i, "Nombre Paciente"),
                            Convert.ToString(cboPromocion.Text),
                            Server.MapPath(ASPxFileManager1.SelectedFile.FullName)
                           ))
            {
                Util.showmsg("Los correos se enviaron exitosamente", this.Page);
            }
            else 
            {
                //Util.showmsg("Error al enviar esta cuenta de correo : "
                    //+ (string)dgExcel.GetRowValues(i, "Correo 1") + " Se detiene el proceso de envio", this.Page);
                lblMensaje.Text = "Error al enviar esta cuenta de correo : "
                    + (string)dgExcel.GetRowValues(i, "Correo 1") + " Se detiene el proceso de envio";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
                return;
            }
        }
        i++;   
    }
  
}

bool  Enviar_Correo(string correo, string nompac, string nompromoc,string archivo)
{
    try
    {
        String cuerpo="";
        cuerpo="Estimado Sr.(Sra.)(Srta.) " + nompac + Convert.ToChar(13) ;
        cuerpo = cuerpo + Convert.ToChar(9) + Convert.ToChar(9) + "por medio del presente le informamos de la siguiente promoción : " + nompromoc + "  y por ser un cliente preferencial de nuestra" + Convert.ToChar(13);
	    cuerpo=cuerpo +"clínica se le está brindando un vale de " +  cboVale.Text + " por el cual podrá acceder a dicha promoción." + Convert.ToChar(13);
        cuerpo=cuerpo+Convert.ToChar(13);
        cuerpo=cuerpo +"Asimismo, la promoción y el vale se encuentran adjunto a este correo el cual podrá imprimirlos y acercarse con ellos a nuestra " +Convert.ToChar(13);
        cuerpo=cuerpo +"clínica y poder hacer uso de ellos en los plazos que se indican, del " + dtpFechaInicio.Text  + " al " + dtpFechaFin.Text + " " + Convert.ToChar(13);
        cuerpo=cuerpo+Convert.ToChar(13);
        cuerpo=cuerpo +"Esperando contar con su asistencia nos despedimos hasta una siguiente oportunidad." +Convert.ToChar(13);
        cuerpo=cuerpo+Convert.ToChar(13);
        cuerpo=cuerpo+Convert.ToChar(13);
        cuerpo=cuerpo+"SALUDOS";
        cuerpo=cuerpo+Convert.ToChar(13);
        cuerpo=cuerpo+Convert.ToChar(13) ;       
	    cuerpo=cuerpo+Convert.ToChar(13);
        cuerpo=cuerpo+Convert.ToChar(13);			
	    cuerpo=cuerpo+"Alex Marchino"+Convert.ToChar(13);
	    cuerpo=cuerpo+"Área de Marketing"+Convert.ToChar(13);
	    cuerpo=cuerpo+"Clínica Especialidades Medicas."+Convert.ToChar(13);

        //Configuración del Mensaje 
        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
        //Especificamos el correo desde el que se enviará el Email y el nombre de la persona que lo envía
        mail.From = new MailAddress("jpereziii@gmail.com", "Jose Perez", Encoding.UTF8);
        //Aquí ponemos el asunto del correo
        mail.Subject = "Clínica Especialidades Medicas Promocion : " + nompromoc;
        //Aquí ponemos el mensaje que incluirá el correo
        mail.Body = cuerpo;
        //Especificamos a quien enviaremos el Email, no es necesario que sea Gmail, puede ser cualquier otro proveedor
        mail.To.Add(correo);
        //si queremos agregar con copia a alguien mas
      //  mail.CC.Add("");
        //Si queremos enviar archivos adjuntos tenemos que especificar la ruta en donde se encuentran
        Attachment Data = new Attachment(archivo, MediaTypeNames.Image.Jpeg);
        //Obtengo las propiedades del archivo.
        //ContentDisposition disposition = Data.ContentDisposition;
        //disposition.CreationDate = System.IO.File.GetCreationTime(archivo);
        //disposition.ModificationDate = System.IO.File.GetLastWriteTime(archivo);
        //disposition.ReadDate = System.IO.File.GetLastAccessTime(archivo);

        mail.Attachments.Add(Data);

        //Configuracion del SMTP
        SmtpServer.Port = 25; //Puerto que utiliza Gmail para sus servicios
        //Especificamos las credenciales con las que enviaremos el mail
        SmtpServer.Credentials = new System.Net.NetworkCredential("jpereziii@gmail.com", "xxxxxxx");
        SmtpServer.EnableSsl = true;

        SmtpServer.Send(mail);
        mail.Dispose();
        SmtpServer.Dispose();
        return true;



     }
    catch (Exception)
    {
        return false;

    }
}

protected void cmdMostrar_Click(object sender, EventArgs e)
{
    
    if (RutaExcel.Length == 0)
    {
        //Util.showmsg("Seleccione un archivo excel!!!",this.Page);
        lblMensaje.Text = "Seleccione un archivo excel!!!";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
        return;
    }
    cargar_Grid(RutaExcel);
    txtCantidadVales.Text = Convert.ToString(dgExcel.VisibleRowCount);

}
protected void dgExcel_PageIndexChanged(object sender, EventArgs e)
{
    if (RutaExcel.Length == 0)
    {
        //Util.showmsg("Seleccione un archivo excel!!!", this.Page);
        lblMensaje.Text = "Seleccione un archivo excel!!!";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
        return;
    }
    cargar_Grid(RutaExcel);
}
protected void ASPxFileManager1_SelectedFileOpened(object source, DevExpress.Web.ASPxFileManager.FileManagerFileOpenedEventArgs e)
{

}
protected void ASPxButton5_Click(object sender, EventArgs e)
{
   


}

private bool validarInsercion()
{
    bool Bool = true;

    if (dtpFechaDifusion.Value == null)
    {
        Bool = false;
        //Util.showmsg("La Fecha de Difusión debe ser ingresada", this.Page);
        lblMensaje.Text = "La Fecha de Difusión debe ser ingresada";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }
    else if (dtpFechaInicio.Value == null)
    {
        Bool = false;
        //Util.showmsg("La Fecha de Inicio Valida debe ser ingresada", this.Page);
        lblMensaje.Text = "La Fecha de Inicio Valida debe ser ingresada";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }
    else if (dtpFechaFin.Value == null)
    {
        Bool = false;
        //Util.showmsg("La Fecha de Fin Valida debe ser ingresada", this.Page);
        lblMensaje.Text = "La Fecha de Fin Valida debe ser ingresada";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }
    else if (cboPromocion.Value == null)
    {
        Bool = false;
        //Util.showmsg("La Promoción debe ser ingresada", this.Page);
        lblMensaje.Text = "La Promoción debe ser ingresada";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }
    else if (cboVale.Value == null)
    {
        Bool = false;
        //Util.showmsg("El Vale debe ser ingresado", this.Page);
        lblMensaje.Text = "El Vale debe ser ingresado";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }
    else if (cboTipoPromocion.Value == null)
    {
        Bool = false;
        //Util.showmsg("El Tipo de Promoción debe ser ingresado", this.Page);
        lblMensaje.Text = "El Tipo de Promoción debe ser ingresado";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }

    return Bool;
}



}